package com.hd.determine.modules.alarm.model;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.hd.common.constant.BizConstant;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 *
 * </p>
 *
 * @author chentl123
 * @since 2021-01-07
 */
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("sp_alarm_rule")
public class AlarmRule extends Model<AlarmRule> implements Serializable {

    private static final long serialVersionUID = 1L;

    //查询构造
    public AlarmRule(String ruleName, String alarmType) {
        this.ruleName = ruleName;
        this.alarmType = alarmType;
    }


    /**
     * 开始时间
     */
    @TableField("start_time")
    private Date startTime;
    /**
     * 结束时间
     */
    @TableField("end_time")
    private Date endTime;
    /**
     * 创建时间
     */
    @TableField("create_time")
    private Date createTime;
    /**
     * 报警类型 |  0 分段限速 1 疲劳驾驶 2 夜间禁行 3 不定位 4 无数据
     */
    @TableField("alarm_type")
    private String alarmType;
    /**
     * 偏移距离 km
     */
    @TableField("exceeded_distance")
    private Long exceededDistance;
    /**
     * 超时分钟数 min
     */
    @TableField("exceeded_minute")
    private Long exceededMinute;
    /**
     * 连续驾驶分钟数 min
     */
    @TableField("continuous_minute")
    private Long continuousMinute;
    /**
     * 休息分钟数 min
     */
    @TableField("rest_minute")
    private Long restMinute;
    /**
     * 业务id
     */
    private String id;
    /**
     * 规则名称
     */
    @TableField("rule_name")
    private String ruleName;
    /**
     * 创建人
     */
    @TableField("create_by")
    private String createBy;
    /**
     * 更新人
     */
    @TableField("update_by")
    private String updateBy;
    /**
     * 更新时间
     */
    @TableField("update_time")
    private Date updateTime;
    /**
     * 手机号
     */
    private String phone;
    /**
     * 邮箱
     */
    private String email;
    /**
     * 开始时间
     */
    @TableField(exist = false)
    private String startTimeStr;
    /**
     * 结束时间
     */
    @TableField(exist = false)
    private String endTimeStr;
    /**
     * 结束时间
     */
    @TableField(exist = false)
    private String vehicleId;

    public String getAlarmName() {
        BizConstant.AlarmType type = BizConstant.AlarmType.get(this.alarmType);
        return type == null ? "未定义的报警类型" : type.val();
    }

    @Override
    protected Serializable pkVal() {
        return this.id;
    }
}
